package myself.study.network.udp.demo;

import java.net.InetAddress;
import java.net.UnknownHostException;

import org.junit.Test;

/**
* @Name: InetAddressDemo
* @Description: InetAddress类测试类
* 说明：
* 	InetAddress类没有提供构造方法，如果一个类没有构造方法：
* 		1、该类的成员全部是静态的（例如：Math、Arrays、Collections）
* 		2、属于单例设计模式（例如：Runtime）
* 		3、类中有静态方法返回该类的实例化对象（例如：InetAddress）
* 		例如：
* 			class Demo {
* 				//构造方法私有化
* 				private Demo() {}
* 				//提供获取该类实例的静态方法
* 				public static Demo getDemoInstance() {
* 					return new Demo() ;
* 				}
* 			}
* InetAddress类使用总结：
* 	static InetAddress getByName(String host)  在给定主机名的情况下确定主机的 IP地址。 主机名可以是机器名（如 "java.sun.com"），也可以是其 IP 地址的文本表示形式。
* 	String getHostAddress() 返回 IP 地址字符串（以文本表现形式）。 
* 	String getHostName() 获取此 IP 地址的主机名。
* 	static InetAddress getLocalHost()  返回本地主机。  
* 	boolean isReachable(int timeout) 测试是否可以达到该地址。 timeout - 调用中止前的时间（以毫秒为单位） 
* @Author: 李超	lc_jack@foxmail.com
* @CreateDate: 2017-1-11 下午10:12:41 
* @Version: V1.0
 */
public class InetAddressDemo {
	
	@Test
	public void testInetAddress01() throws UnknownHostException {
		//获取本地主机的ip地址对象
		InetAddress address = InetAddress.getLocalHost() ;
		//获取主机名及ip地址的字符串表示
		String hostName = address.getHostName() ;
		String hostAddress = address.getHostAddress() ;
		System.out.println(hostName + "->" + hostAddress);
	}
	
	@Test
	public void testInetAddress02() throws UnknownHostException {
		//根据主机名获取InetAddress对象
		InetAddress address = InetAddress.getByName("LC-PC") ;
		//获取ip地址
		String hostAddress = address.getHostAddress() ;
		System.out.println(hostAddress);
	}
	
	@Test
	public void testInetAddress03() throws UnknownHostException {
		//根据ip地址的字符串表示获取ip地址对象
		InetAddress address = InetAddress.getByName("222.28.133.3") ;
		//获取ip地址对象的主机名
		String hostName = address.getHostName() ;
		System.out.println(hostName);
	}
	
	
}
